package fangpian.leecode

/* 1. 两数之和 [简单]

知识点：数组

给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target  的那 两个 整数，并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
*/
fun main() {
    // 补充完整
    fun twoSum(nums: IntArray, target: Int): IntArray {
        val map = hashMapOf<Int, Int>()
        for (i in nums.indices) {
            val another = target - nums[i]
            if (map.containsKey(another)) {
                return intArrayOf(map[another]!!, i)
            }
            map[nums[i]] = i
        }
        throw Exception()
    }

    println(twoSum(intArrayOf(2, 7, 11, 15), 9).contentToString())
    println(twoSum(intArrayOf(3, 2, 4), 6).contentToString())
    println(twoSum(intArrayOf(3, 3), 6).contentToString())
}
